using System;
using System.Diagnostics.Contracts;

namespace Beaker.OpenCube.Render
{
	public static class Helpers
	{
		public const double InvPI = 1d / Math.PI;

		public const double Precision = 0.000001d;

		public static void Swap( ref double d1, ref double d2 )
		{
			double temp = d2;
			d2 = d1;
			d1 = temp;
		}

		public static void Order( ref double d1, ref double d2 )
		{
			if( d1 > d2 )
			{
				double temp = d2;
				d2 = d1;
				d1 = temp;
			}
		}

		[Pure]
		
		public static bool AboutEqual( this double value, double other )
		{
			return Math.Abs( value - other ) < Precision;
		}

		[Pure]
		
		public static bool AboutZero( this double value )
		{
			return Math.Abs( value ) < Precision;
		}
	}
}